<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>update_window_pose [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_graphics.html">图形</a> / <a href="toc_graphics_window.html">Window</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">update_window_pose</span><span data-if="c" style="display:none;">T_update_window_pose</span><span data-if="cpp" style="display:none;">UpdateWindowPose</span><span data-if="dotnet" style="display:none;">UpdateWindowPose</span><span data-if="python" style="display:none;">update_window_pose</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">update_window_pose</span><span data-if="c" style="display:none;">T_update_window_pose</span><span data-if="cpp" style="display:none;">UpdateWindowPose</span><span data-if="dotnet" style="display:none;">UpdateWindowPose</span><span data-if="python" style="display:none;">update_window_pose</span></code> — Modify the pose of a 3D plot.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>update_window_pose</b>( :  : <a href="#WindowHandle"><i>WindowHandle</i></a>, <a href="#LastRow"><i>LastRow</i></a>, <a href="#LastCol"><i>LastCol</i></a>, <a href="#CurrentRow"><i>CurrentRow</i></a>, <a href="#CurrentCol"><i>CurrentCol</i></a>, <a href="#Mode"><i>Mode</i></a> : )</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_update_window_pose</b>(const Htuple <a href="#WindowHandle"><i>WindowHandle</i></a>, const Htuple <a href="#LastRow"><i>LastRow</i></a>, const Htuple <a href="#LastCol"><i>LastCol</i></a>, const Htuple <a href="#CurrentRow"><i>CurrentRow</i></a>, const Htuple <a href="#CurrentCol"><i>CurrentCol</i></a>, const Htuple <a href="#Mode"><i>Mode</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>UpdateWindowPose</b>(const HTuple&amp; <a href="#WindowHandle"><i>WindowHandle</i></a>, const HTuple&amp; <a href="#LastRow"><i>LastRow</i></a>, const HTuple&amp; <a href="#LastCol"><i>LastCol</i></a>, const HTuple&amp; <a href="#CurrentRow"><i>CurrentRow</i></a>, const HTuple&amp; <a href="#CurrentCol"><i>CurrentCol</i></a>, const HTuple&amp; <a href="#Mode"><i>Mode</i></a>)</code></p>
<p>
<code>void <a href="HWindow.html">HWindow</a>::<b>UpdateWindowPose</b>(const HTuple&amp; <a href="#LastRow"><i>LastRow</i></a>, const HTuple&amp; <a href="#LastCol"><i>LastCol</i></a>, const HTuple&amp; <a href="#CurrentRow"><i>CurrentRow</i></a>, const HTuple&amp; <a href="#CurrentCol"><i>CurrentCol</i></a>, const HString&amp; <a href="#Mode"><i>Mode</i></a>) const</code></p>
<p>
<code>void <a href="HWindow.html">HWindow</a>::<b>UpdateWindowPose</b>(double <a href="#LastRow"><i>LastRow</i></a>, double <a href="#LastCol"><i>LastCol</i></a>, double <a href="#CurrentRow"><i>CurrentRow</i></a>, double <a href="#CurrentCol"><i>CurrentCol</i></a>, const HString&amp; <a href="#Mode"><i>Mode</i></a>) const</code></p>
<p>
<code>void <a href="HWindow.html">HWindow</a>::<b>UpdateWindowPose</b>(double <a href="#LastRow"><i>LastRow</i></a>, double <a href="#LastCol"><i>LastCol</i></a>, double <a href="#CurrentRow"><i>CurrentRow</i></a>, double <a href="#CurrentCol"><i>CurrentCol</i></a>, const char* <a href="#Mode"><i>Mode</i></a>) const</code></p>
<p>
<code>void <a href="HWindow.html">HWindow</a>::<b>UpdateWindowPose</b>(double <a href="#LastRow"><i>LastRow</i></a>, double <a href="#LastCol"><i>LastCol</i></a>, double <a href="#CurrentRow"><i>CurrentRow</i></a>, double <a href="#CurrentCol"><i>CurrentCol</i></a>, const wchar_t* <a href="#Mode"><i>Mode</i></a>) const  <span class="signnote">
            (
            Windows only)
          </span></code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>UpdateWindowPose</b>(<a href="HTuple.html">HTuple</a> <a href="#WindowHandle"><i>windowHandle</i></a>, <a href="HTuple.html">HTuple</a> <a href="#LastRow"><i>lastRow</i></a>, <a href="HTuple.html">HTuple</a> <a href="#LastCol"><i>lastCol</i></a>, <a href="HTuple.html">HTuple</a> <a href="#CurrentRow"><i>currentRow</i></a>, <a href="HTuple.html">HTuple</a> <a href="#CurrentCol"><i>currentCol</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Mode"><i>mode</i></a>)</code></p>
<p>
<code>void <a href="HWindow.html">HWindow</a>.<b>UpdateWindowPose</b>(<a href="HTuple.html">HTuple</a> <a href="#LastRow"><i>lastRow</i></a>, <a href="HTuple.html">HTuple</a> <a href="#LastCol"><i>lastCol</i></a>, <a href="HTuple.html">HTuple</a> <a href="#CurrentRow"><i>currentRow</i></a>, <a href="HTuple.html">HTuple</a> <a href="#CurrentCol"><i>currentCol</i></a>, string <a href="#Mode"><i>mode</i></a>)</code></p>
<p>
<code>void <a href="HWindow.html">HWindow</a>.<b>UpdateWindowPose</b>(double <a href="#LastRow"><i>lastRow</i></a>, double <a href="#LastCol"><i>lastCol</i></a>, double <a href="#CurrentRow"><i>currentRow</i></a>, double <a href="#CurrentCol"><i>currentCol</i></a>, string <a href="#Mode"><i>mode</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>update_window_pose</b>(<a href="#WindowHandle"><i>window_handle</i></a>: HHandle, <a href="#LastRow"><i>last_row</i></a>: Union[float, int], <a href="#LastCol"><i>last_col</i></a>: Union[float, int], <a href="#CurrentRow"><i>current_row</i></a>: Union[float, int], <a href="#CurrentCol"><i>current_col</i></a>: Union[float, int], <a href="#Mode"><i>mode</i></a>: str) -&gt; None</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p>该算子 <code><span data-if="hdevelop" style="display:inline">update_window_pose</span><span data-if="c" style="display:none">update_window_pose</span><span data-if="cpp" style="display:none">UpdateWindowPose</span><span data-if="com" style="display:none">UpdateWindowPose</span><span data-if="dotnet" style="display:none">UpdateWindowPose</span><span data-if="python" style="display:none">update_window_pose</span></code> provides an easy way to modify the
pose of the height field displayed by <a href="disp_obj.html"><code><span data-if="hdevelop" style="display:inline">disp_obj</span><span data-if="c" style="display:none">disp_obj</span><span data-if="cpp" style="display:none">DispObj</span><span data-if="com" style="display:none">DispObj</span><span data-if="dotnet" style="display:none">DispObj</span><span data-if="python" style="display:none">disp_obj</span></code></a> if the paint mode is
set to <i><span data-if="hdevelop" style="display:inline">'3d_plot'</span><span data-if="c" style="display:none">"3d_plot"</span><span data-if="cpp" style="display:none">"3d_plot"</span><span data-if="com" style="display:none">"3d_plot"</span><span data-if="dotnet" style="display:none">"3d_plot"</span><span data-if="python" style="display:none">"3d_plot"</span></i> using <a href="set_paint.html"><code><span data-if="hdevelop" style="display:inline">set_paint</span><span data-if="c" style="display:none">set_paint</span><span data-if="cpp" style="display:none">SetPaint</span><span data-if="com" style="display:none">SetPaint</span><span data-if="dotnet" style="display:none">SetPaint</span><span data-if="python" style="display:none">set_paint</span></code></a>.
</p>
<p>Two window coordinates (<a href="#LastRow"><i><code><span data-if="hdevelop" style="display:inline">LastRow</span><span data-if="c" style="display:none">LastRow</span><span data-if="cpp" style="display:none">LastRow</span><span data-if="com" style="display:none">LastRow</span><span data-if="dotnet" style="display:none">lastRow</span><span data-if="python" style="display:none">last_row</span></code></i></a>,<a href="#LastCol"><i><code><span data-if="hdevelop" style="display:inline">LastCol</span><span data-if="c" style="display:none">LastCol</span><span data-if="cpp" style="display:none">LastCol</span><span data-if="com" style="display:none">LastCol</span><span data-if="dotnet" style="display:none">lastCol</span><span data-if="python" style="display:none">last_col</span></code></i></a>) and
(<a href="#CurrentRow"><i><code><span data-if="hdevelop" style="display:inline">CurrentRow</span><span data-if="c" style="display:none">CurrentRow</span><span data-if="cpp" style="display:none">CurrentRow</span><span data-if="com" style="display:none">CurrentRow</span><span data-if="dotnet" style="display:none">currentRow</span><span data-if="python" style="display:none">current_row</span></code></i></a>, <a href="#CurrentCol"><i><code><span data-if="hdevelop" style="display:inline">CurrentCol</span><span data-if="c" style="display:none">CurrentCol</span><span data-if="cpp" style="display:none">CurrentCol</span><span data-if="com" style="display:none">CurrentCol</span><span data-if="dotnet" style="display:none">currentCol</span><span data-if="python" style="display:none">current_col</span></code></i></a>) are transformed into rotation,
scaling, or movement depending on <a href="#Mode"><i><code><span data-if="hdevelop" style="display:inline">Mode</span><span data-if="c" style="display:none">Mode</span><span data-if="cpp" style="display:none">Mode</span><span data-if="com" style="display:none">Mode</span><span data-if="dotnet" style="display:none">mode</span><span data-if="python" style="display:none">mode</span></code></i></a>.
This window coordinates must be provided with respect to the current image
part. As a consequence, this coordinates are subpixel coordinates. Given the
current image part (row1,column1,row2,column2), the upper left
corner corresponds to the coordinate (row1 - 0.5, col1 - 0.5). Accordingly,
the bottom right corner corresponds to the coordinate
(row2 - 0.5, col2 - 0.5). Use <a href="get_mposition_sub_pix.html"><code><span data-if="hdevelop" style="display:inline">get_mposition_sub_pix</span><span data-if="c" style="display:none">get_mposition_sub_pix</span><span data-if="cpp" style="display:none">GetMpositionSubPix</span><span data-if="com" style="display:none">GetMpositionSubPix</span><span data-if="dotnet" style="display:none">GetMpositionSubPix</span><span data-if="python" style="display:none">get_mposition_sub_pix</span></code></a> or
<a href="get_mbutton_sub_pix.html"><code><span data-if="hdevelop" style="display:inline">get_mbutton_sub_pix</span><span data-if="c" style="display:none">get_mbutton_sub_pix</span><span data-if="cpp" style="display:none">GetMbuttonSubPix</span><span data-if="com" style="display:none">GetMbuttonSubPix</span><span data-if="dotnet" style="display:none">GetMbuttonSubPix</span><span data-if="python" style="display:none">get_mbutton_sub_pix</span></code></a> to obtain this coordinates directly.
</p>
<p>If <a href="#Mode"><i><code><span data-if="hdevelop" style="display:inline">Mode</span><span data-if="c" style="display:none">Mode</span><span data-if="cpp" style="display:none">Mode</span><span data-if="com" style="display:none">Mode</span><span data-if="dotnet" style="display:none">mode</span><span data-if="python" style="display:none">mode</span></code></i></a> is set to <i><span data-if="hdevelop" style="display:inline">'rotate'</span><span data-if="c" style="display:none">"rotate"</span><span data-if="cpp" style="display:none">"rotate"</span><span data-if="com" style="display:none">"rotate"</span><span data-if="dotnet" style="display:none">"rotate"</span><span data-if="python" style="display:none">"rotate"</span></i>, the height field is rotated
using a virtual trackball model. Both points are projected on a sphere
centered in the center of the window <a href="#WindowHandle"><i><code><span data-if="hdevelop" style="display:inline">WindowHandle</span><span data-if="c" style="display:none">WindowHandle</span><span data-if="cpp" style="display:none">WindowHandle</span><span data-if="com" style="display:none">WindowHandle</span><span data-if="dotnet" style="display:none">windowHandle</span><span data-if="python" style="display:none">window_handle</span></code></i></a>. The circular
arc between this two projections corresponds to the rotation applied
to the height field.
</p>
<p>If <a href="#Mode"><i><code><span data-if="hdevelop" style="display:inline">Mode</span><span data-if="c" style="display:none">Mode</span><span data-if="cpp" style="display:none">Mode</span><span data-if="com" style="display:none">Mode</span><span data-if="dotnet" style="display:none">mode</span><span data-if="python" style="display:none">mode</span></code></i></a> is set to <i><span data-if="hdevelop" style="display:inline">'scale'</span><span data-if="c" style="display:none">"scale"</span><span data-if="cpp" style="display:none">"scale"</span><span data-if="com" style="display:none">"scale"</span><span data-if="dotnet" style="display:none">"scale"</span><span data-if="python" style="display:none">"scale"</span></i>, zooming is reduced if
<a href="#CurrentRow"><i><code><span data-if="hdevelop" style="display:inline">CurrentRow</span><span data-if="c" style="display:none">CurrentRow</span><span data-if="cpp" style="display:none">CurrentRow</span><span data-if="com" style="display:none">CurrentRow</span><span data-if="dotnet" style="display:none">currentRow</span><span data-if="python" style="display:none">current_row</span></code></i></a> is greater than <a href="#LastRow"><i><code><span data-if="hdevelop" style="display:inline">LastRow</span><span data-if="c" style="display:none">LastRow</span><span data-if="cpp" style="display:none">LastRow</span><span data-if="com" style="display:none">LastRow</span><span data-if="dotnet" style="display:none">lastRow</span><span data-if="python" style="display:none">last_row</span></code></i></a> and increased if
<a href="#CurrentRow"><i><code><span data-if="hdevelop" style="display:inline">CurrentRow</span><span data-if="c" style="display:none">CurrentRow</span><span data-if="cpp" style="display:none">CurrentRow</span><span data-if="com" style="display:none">CurrentRow</span><span data-if="dotnet" style="display:none">currentRow</span><span data-if="python" style="display:none">current_row</span></code></i></a> is smaller than <a href="#LastRow"><i><code><span data-if="hdevelop" style="display:inline">LastRow</span><span data-if="c" style="display:none">LastRow</span><span data-if="cpp" style="display:none">LastRow</span><span data-if="com" style="display:none">LastRow</span><span data-if="dotnet" style="display:none">lastRow</span><span data-if="python" style="display:none">last_row</span></code></i></a>.
</p>
<p>If <a href="#Mode"><i><code><span data-if="hdevelop" style="display:inline">Mode</span><span data-if="c" style="display:none">Mode</span><span data-if="cpp" style="display:none">Mode</span><span data-if="com" style="display:none">Mode</span><span data-if="dotnet" style="display:none">mode</span><span data-if="python" style="display:none">mode</span></code></i></a> is set to <i><span data-if="hdevelop" style="display:inline">'move'</span><span data-if="c" style="display:none">"move"</span><span data-if="cpp" style="display:none">"move"</span><span data-if="com" style="display:none">"move"</span><span data-if="dotnet" style="display:none">"move"</span><span data-if="python" style="display:none">"move"</span></i>, the input points are projected
onto the plane through the center of the height field parallel to the viewing
plane. The center of the height field is moved in this plane by the distance
between both projections.
</p>
<p>If <a href="#Mode"><i><code><span data-if="hdevelop" style="display:inline">Mode</span><span data-if="c" style="display:none">Mode</span><span data-if="cpp" style="display:none">Mode</span><span data-if="com" style="display:none">Mode</span><span data-if="dotnet" style="display:none">mode</span><span data-if="python" style="display:none">mode</span></code></i></a> is set to <i><span data-if="hdevelop" style="display:inline">'move_plane'</span><span data-if="c" style="display:none">"move_plane"</span><span data-if="cpp" style="display:none">"move_plane"</span><span data-if="com" style="display:none">"move_plane"</span><span data-if="dotnet" style="display:none">"move_plane"</span><span data-if="python" style="display:none">"move_plane"</span></i>, the input points are
projected on the plane given by height zero. The height field is moved in
this plane by the distance between both projections.
</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  <li>未经并行化处理。</li>
</ul>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="WindowHandle" class="parname"><b><code><span data-if="hdevelop" style="display:inline">WindowHandle</span><span data-if="c" style="display:none">WindowHandle</span><span data-if="cpp" style="display:none">WindowHandle</span><span data-if="com" style="display:none">WindowHandle</span><span data-if="dotnet" style="display:none">windowHandle</span><span data-if="python" style="display:none">window_handle</span></code></b> (input_control)  </span><span>window <code>→</code> <span data-if="dotnet" style="display:none"><a href="HWindow.html">HWindow</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Window handle.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="LastRow" class="parname"><b><code><span data-if="hdevelop" style="display:inline">LastRow</span><span data-if="c" style="display:none">LastRow</span><span data-if="cpp" style="display:none">LastRow</span><span data-if="com" style="display:none">LastRow</span><span data-if="dotnet" style="display:none">lastRow</span><span data-if="python" style="display:none">last_row</span></code></b> (input_control)  </span><span>point.y <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Union[float, int]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Row coordinate of the first point.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="LastCol" class="parname"><b><code><span data-if="hdevelop" style="display:inline">LastCol</span><span data-if="c" style="display:none">LastCol</span><span data-if="cpp" style="display:none">LastCol</span><span data-if="com" style="display:none">LastCol</span><span data-if="dotnet" style="display:none">lastCol</span><span data-if="python" style="display:none">last_col</span></code></b> (input_control)  </span><span>point.x <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Union[float, int]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Column coordinate of the first point.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="CurrentRow" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CurrentRow</span><span data-if="c" style="display:none">CurrentRow</span><span data-if="cpp" style="display:none">CurrentRow</span><span data-if="com" style="display:none">CurrentRow</span><span data-if="dotnet" style="display:none">currentRow</span><span data-if="python" style="display:none">current_row</span></code></b> (input_control)  </span><span>point.y <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Union[float, int]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Row coordinate of the second point.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="CurrentCol" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CurrentCol</span><span data-if="c" style="display:none">CurrentCol</span><span data-if="cpp" style="display:none">CurrentCol</span><span data-if="com" style="display:none">CurrentCol</span><span data-if="dotnet" style="display:none">currentCol</span><span data-if="python" style="display:none">current_col</span></code></b> (input_control)  </span><span>point.x <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Union[float, int]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Column coordinate of the second point.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="Mode" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Mode</span><span data-if="c" style="display:none">Mode</span><span data-if="cpp" style="display:none">Mode</span><span data-if="com" style="display:none">Mode</span><span data-if="dotnet" style="display:none">mode</span><span data-if="python" style="display:none">mode</span></code></b> (input_control)  </span><span>string <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">str</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Navigation mode.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'rotate'</span>
    <span data-if="c" style="display:none">"rotate"</span>
    <span data-if="cpp" style="display:none">"rotate"</span>
    <span data-if="com" style="display:none">"rotate"</span>
    <span data-if="dotnet" style="display:none">"rotate"</span>
    <span data-if="python" style="display:none">"rotate"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'move'</span><span data-if="c" style="display:none">"move"</span><span data-if="cpp" style="display:none">"move"</span><span data-if="com" style="display:none">"move"</span><span data-if="dotnet" style="display:none">"move"</span><span data-if="python" style="display:none">"move"</span>, <span data-if="hdevelop" style="display:inline">'move_plane'</span><span data-if="c" style="display:none">"move_plane"</span><span data-if="cpp" style="display:none">"move_plane"</span><span data-if="com" style="display:none">"move_plane"</span><span data-if="dotnet" style="display:none">"move_plane"</span><span data-if="python" style="display:none">"move_plane"</span>, <span data-if="hdevelop" style="display:inline">'rotate'</span><span data-if="c" style="display:none">"rotate"</span><span data-if="cpp" style="display:none">"rotate"</span><span data-if="com" style="display:none">"rotate"</span><span data-if="dotnet" style="display:none">"rotate"</span><span data-if="python" style="display:none">"rotate"</span>, <span data-if="hdevelop" style="display:inline">'scale'</span><span data-if="c" style="display:none">"scale"</span><span data-if="cpp" style="display:none">"scale"</span><span data-if="com" style="display:none">"scale"</span><span data-if="dotnet" style="display:none">"scale"</span><span data-if="python" style="display:none">"scale"</span></p>
</div>
<h2 id="sec_example_all">例程 (HDevelop)</h2>
<pre class="example">
* Interactive display of a height field
dev_set_paint ('3d_plot')
while (1)
  dev_set_check ('~give_error')
  get_mposition_sub_pix (WindowHandle, Row, Column, Button)
  dev_set_check ('give_error')
  if (ButtonDown and (Button == 0))
    ButtonDown := false
  endif
  if (not(Button == 0))
    if (ButtonDown)
      if (Button == 1)
        mode := 'rotate'
      endif
      if (Button == 4)
        mode := 'scale'
      endif
      if (Button == 5)
        mode := 'move'
      endif
      update_window_pose (WindowHandle, lastRow, lastCol, Row, Column, mode)
    else
      if (Button == 2)
        break
      endif
      ButtonDown := true
    endif
    lastCol := Column
    lastRow := Row
  endif
  dev_display (Image)
endwhile
</pre>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="set_paint.html"><span data-if="hdevelop" style="display:inline">set_paint</span><span data-if="c" style="display:none">set_paint</span><span data-if="cpp" style="display:none">SetPaint</span><span data-if="com" style="display:none">SetPaint</span><span data-if="dotnet" style="display:none">SetPaint</span><span data-if="python" style="display:none">set_paint</span></a></code>, 
<code><a href="open_window.html"><span data-if="hdevelop" style="display:inline">open_window</span><span data-if="c" style="display:none">open_window</span><span data-if="cpp" style="display:none">OpenWindow</span><span data-if="com" style="display:none">OpenWindow</span><span data-if="dotnet" style="display:none">OpenWindow</span><span data-if="python" style="display:none">open_window</span></a></code>, 
<code><a href="get_mposition_sub_pix.html"><span data-if="hdevelop" style="display:inline">get_mposition_sub_pix</span><span data-if="c" style="display:none">get_mposition_sub_pix</span><span data-if="cpp" style="display:none">GetMpositionSubPix</span><span data-if="com" style="display:none">GetMpositionSubPix</span><span data-if="dotnet" style="display:none">GetMpositionSubPix</span><span data-if="python" style="display:none">get_mposition_sub_pix</span></a></code>, 
<code><a href="get_mbutton_sub_pix.html"><span data-if="hdevelop" style="display:inline">get_mbutton_sub_pix</span><span data-if="c" style="display:none">get_mbutton_sub_pix</span><span data-if="cpp" style="display:none">GetMbuttonSubPix</span><span data-if="com" style="display:none">GetMbuttonSubPix</span><span data-if="dotnet" style="display:none">GetMbuttonSubPix</span><span data-if="python" style="display:none">get_mbutton_sub_pix</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="disp_image.html"><span data-if="hdevelop" style="display:inline">disp_image</span><span data-if="c" style="display:none">disp_image</span><span data-if="cpp" style="display:none">DispImage</span><span data-if="com" style="display:none">DispImage</span><span data-if="dotnet" style="display:none">DispImage</span><span data-if="python" style="display:none">disp_image</span></a></code>
</p>
<h2 id="sec_see">参考其它</h2>
<p>
<code><a href="unproject_coordinates.html"><span data-if="hdevelop" style="display:inline">unproject_coordinates</span><span data-if="c" style="display:none">unproject_coordinates</span><span data-if="cpp" style="display:none">UnprojectCoordinates</span><span data-if="com" style="display:none">UnprojectCoordinates</span><span data-if="dotnet" style="display:none">UnprojectCoordinates</span><span data-if="python" style="display:none">unproject_coordinates</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
Foundation</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
